home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / Falcon / WINREC / DOKU / DEUTSCH / DVS.TXT < prev    next >
Encoding:
Text File  |  1994-08-30  |  4.5 KB  |  151 lines

  1. DVSM Samples
  2. ------------
  3.  
  4. Jedes DVS Sample beginnt mit folgendem Header:
  5.  
  6. typedef struct
  7. {
  8.     char magic[6];     
  9.     int headlen;       
  10.     unsigned int freq;          
  11.     char pack;        
  12.     char mode;        
  13.     long blocklen;     
  14. } DVSMHEAD;
  15.  
  16. Bedeutung der Einträge:
  17. -----------------------
  18.  
  19. magic:
  20.     "DVSM\0\0"
  21. headlen:
  22.     Headerlänge, d.h. Abstand der Sounddaten vom Dateibeginn
  23.     Unbedingt auswerten, wegen den Erweiterungsblöcken (siehe unten)!!
  24.     Die komplette Headerlänge muß gerade sein!
  25. freq:
  26.     Samplingfrequenz:
  27.             0-7 : Erlaubte CODEC Vorteiler (0: 8kHz ...  7: 49kHz)
  28.             >256: Samplingfrequenz in Hz
  29. pack:
  30.     0: Ungepackt
  31.     2: DVS Packmethode
  32.     4: DVS Voicepackmethode (mit WinRec Pro)
  33.     5: ADPCM (mit WinRec Pro)
  34.     In Zukunft sind auch andere Werte denkbar! Also nicht nur auf 'pack>0' sondern auf
  35.     'pack==x' abfragen!
  36. mode:
  37.     Bit 0: 8/16 Bit
  38.     Bit 1: Stereo/Mono
  39. blocklen (im Moment nur gültig falls 'pack'==2 oder 'pack'==4):
  40.     Länge eines gepackten Blocks (= Abstand der Stützwerte). Bei gepackten Samples
  41.     unbedingt auswerten. Ist kein fester Wert! WinRec schreibt (je nach Buffer)
  42.     verschiedene Blocklängen! Die Blocklänge muß gerade sein!
  43.     
  44. Erweiterungsblöcke
  45. ------------------
  46.  
  47. DVS ist ein modulares Format. Nach dem oben beschriebenen Header können noch (fast)
  48. beliebig viele Erweiterungsblöcke folgen. Die Blöcke gehören zum Header, d.h. der
  49. Eintrag 'headlen' umfaßt auch die Erweiterungen! So können (z.B. ältere) Programme
  50. die zusätzlichen Informationen Überspringen. Der "Minimalheader" ist immer 16 Bytes lang,
  51. nämlich die oben beschriebenen Einträge.
  52.  
  53. Ein Block hat folgende Form:
  54.  
  55.      4 Byte (cookie)   Kennung des Blocks
  56.      2 Byte (len)      Länge des Blocks
  57.  len-6 Bytes Daten
  58.  
  59. WinRec versteht ab der Version V1.38 folgende Erweiterungen:
  60.  
  61. Kennung            Länge der Daten        Bedeutung
  62. -----------------------------------------------------------------------------------------
  63. 'CLCK'            1 Word                0: Interner Takt, 1: Extern CD, 2: Extern DAT
  64.  
  65. 'PEAK'            4 Byte                je ein Word für linken und rechten Kanal mit dem höchsten
  66.                                     auftretenden Samplewert
  67.                                     
  68. 'DSPE'            x Bytes                DSP Programm (Soundeffekt !!) im Binary Format
  69.  
  70. 'PARA'            x Bytes                x Parameter für den Soundeffekt. Darf nicht vor dem 'DSPE'
  71.                                     Block stehen!
  72.  
  73. 'PACK'            128 bzw. 8 Bytes    Deltapacktabelle für Distanzwerte. Wird (falls vorhanden)
  74.                                     anstelle der Standardtabelle (s.u.) verwendet.
  75.                                     
  76. 'INFO'            x Bytes                Infotext (z.B. voller Titel)
  77.  
  78. Weiterhin ist definiert, wird aber (im Moment) noch nicht von WinRec genutzt:
  79.  
  80. 'KARA'            x Bytes                Karaoketext (Beschreibung siehe unten)
  81.  
  82.  
  83. Die gesamte Headerlänge kann und darf 65535 Bytes nicht überschreiten. Ein Programm sollte
  84. wenn möglich alle Erweiterungsblöcke durchgehen und anhand der Kennung entscheiden, ob
  85. es die Information nutzen kann.
  86.  
  87. Karaoketextformat
  88. -----------------
  89.     long cookie='KARA'
  90.     int len
  91.     int textlen
  92.  
  93. danach folgt der Text, der im ASCII Format zeilenweise abgelegt ist. Eine
  94. Textzeile darf nicht länger als 40 Zeichen sein. Nach dem Text folgt die
  95. Takttabelle. Sie enthält für jedes Wort des Textes ein 4-Bytewert der den
  96. zeitlichen Abstand zum vorherigen Wort angibt. Die Angabe erfolgt in der Einheit
  97. 1/Samplingfrequenz
  98.  
  99.  
  100. Packformat
  101. ----------
  102.  (im Moment nur für 16 Bit Stereo oder Mono Samples!!!!)
  103.  
  104. Ein Block ist wie folgt aufgebaut (Länge siehe 'blocklen'):
  105.  
  106.  1. Soundword Links    (16 Bit)
  107.  1. Soundword Rechts   (16 Bit)
  108.  1. Distanzwert Links  (8 Bit)
  109.  1. Distanzwert Rechts (8 Bit)
  110.                  .
  111.                  .
  112.                  .
  113.  n. Distanzwert Links  (8 Bit)
  114.  n. Distanzwert Rechts (8 Bit)
  115.  
  116.  
  117. Distanzwerte sind Zeiger auf eine Tabelle mit den 'echten'
  118. 16 Bit Distanzwerten. Die Tabelle enthält Funktionwerte der
  119. Funktion
  120.                    / -1.084618362^-x  für x<0  (-128 bis -1)
  121.             f(x)= {   0               für x=0  (0)
  122.                    \  1.084618362^x   für x>0  (1 bis 127)
  123.                    
  124. Die Tabelle ist (logischerweise) 256 Bytes lang!
  125.  
  126. Voicepackformat
  127. ---------------
  128.  (im Moment nur für 16 Bit Stereo oder Mono Samples!!!!)
  129.  
  130. Ein Block ist wie folgt aufgebaut (Länge siehe 'blocklen'):
  131.  
  132.  1. Soundword Links    (16 Bit)
  133.  1. Soundword Rechts   (16 Bit)
  134.  1. Distanzwert Links  (4 Bit)
  135.  1. Distanzwert Rechts (4 Bit)
  136.                  .
  137.                  .
  138.                  .
  139.  n. Distanzwert Links  (4 Bit)
  140.  n. Distanzwert Rechts (4 Bit)
  141.  
  142.  
  143. Distanzwerte sind Zeiger auf eine Tabelle mit den 'echten'
  144. 16 Bit Distanzwerten:
  145.  
  146. -8192,-4096,-2048,-1024,-512,-256,-64,0,64,256,512,1024,2048,4096,8192
  147.  
  148.  
  149.  
  150. Andreas Binner
  151.